export default {
  mini: {
    // 生产环境下的小程序特殊配置
    webpackChain(chain) {
      // 小程序端特殊配置
      chain.optimization.minimize(true) // 启用代码压缩

      // 先添加terser插件，再配置
      const TerserPlugin = require('terser-webpack-plugin')
      chain.optimization.minimizer('terser').use(TerserPlugin, [
        {
          extractComments: false,
          terserOptions: {
            compress: {
              // 非常重要，否则会把 css 中的 rpx 单位删掉
              keep_infinity: true,
              // 删除所有 console 相关代码
              drop_console: true,
              // 内嵌常量
              reduce_vars: true,
            },
          },
        },
      ])
    },
  },
  h5: {
    /**
     * WebpackChain 插件配置
     * @docs https://github.com/neutrinojs/webpack-chain
     */
    webpackChain(chain) {
      /**
       * 如果 h5 端编译后体积过大，可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。
       * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer
       */
      if (process.env.ANALYZE === 'true') {
        const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')
        chain.plugin('analyzer').use(BundleAnalyzerPlugin, [
          {
            analyzerMode: 'static',
            openAnalyzer: false,
            reportFilename: 'bundle-report.html',
          },
        ])
      }

      /**
       * 如果 h5 端首屏加载时间过长，可以使用 prerender-spa-plugin 插件预加载首页。
       * @docs https://github.com/chrisvfritz/prerender-spa-plugin
       */
      // const path = require('path')
      // const Prerender = require('prerender-spa-plugin')
      // const staticDir = path.join(__dirname, '..', 'dist')
      // chain
      //   .plugin('prerender')
      //   .use(new Prerender({
      //     staticDir,
      //     routes: [ '/pages/index/index' ],
      //     postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') })
      //   }))
    },
  },
}

/**
 * WebpackChain 插件配置
 * @docs https://github.com/neutrinojs/webpack-chain
 */
// webpackChain (chain) {
//   /**
//    * 如果 h5 端编译后体积过大，可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。
//    * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer
//    */
//   chain.plugin('analyzer')
//     .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, [])
//   /**
//    * 如果 h5 端首屏加载时间过长，可以使用 prerender-spa-plugin 插件预加载首页。
//    * @docs https://github.com/chrisvfritz/prerender-spa-plugin
//    */
//   const path = require('path')
//   const Prerender = require('prerender-spa-plugin')
//   const staticDir = path.join(__dirname, '..', 'dist')
//   chain
//     .plugin('prerender')
//     .use(new Prerender({
//       staticDir,
//       routes: [ '/pages/index/index' ],
//       postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') })
//     }))
// }
